浅识大小端模式 您所在的位置:网站首页 qt 判断文件大小 浅识大小端模式

浅识大小端模式

2023-06-11 11:39| 来源: 网络整理| 查看: 265

产生大小端问题的原因

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中存在不同的数据类型,他们所占的字节数各不相同。另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

从软件角度来看,内存相对于一个大得字节数组,其中每个数组元素都是可寻址的. 目前有两种内存模式即 大端模式(big-endian)和小端模式(little-endian)

大小端模式

判断大小端模式 int main() { int little_endian = 0x12345678; char num = *(char*)&little_endian; if(num == 0x78) printf("小端模式\n"); else printf("大端模式\n"); return 0; } //除此之外还可以使用共用体 union typeA{ int a; char b; };

判断大小端

应用场景

1、不同端模式的处理器进行数据传递时必须要考虑端模式的不同 2、在网络上传输数据时,由于数据传输的两端对应不同的硬件平台,采用的存储字节顺序可能不一致。网络字节顺序是大端模式。对于char型数据只占一个字节,无所谓大端和小端。而对于非char类型数据,必须在数据发送到网络上之前将其转换成大端模式。接收网络数据时按符合接受主机的环境接收,我们在写网络程序的时候要注意这方面的问题。

uint16_t htons(uint16_t hostshort); // 端口号 本地字节序转网络字节序 uint16_t ntohs(uint16_t netshort); // 端口号 网络字节序转本地字节序


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有